<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
/**
 * NganLuong Card Payment Library
 * Using NganLuong to checkout
 * @author tannv 
 * @website 
 */
 
class NganLuongCardPayment {
 
   private $table = 'card_payment';
	private $user_id = '';
	private $params	= array(
		'func' 			=> 'CardCharge',
		'version'		=> '2.0',
		'merchant_id'	=> '',
		'merchant_account'	=> '',
		'merchant_password'	=> '',
		'pin_card'				=> '',
		'card_serial'        => '',
		'type_card'				=> '',
		'ref_code'				=> '',
		'client_fullname'		=> '',
		'client_email'			=> '',
		'client_mobile'		=> '',
	);
	
	public function __construct(){
		$this->CI =& get_instance();
		if(!$this->CI->db->table_exists($this->table)){
			$this->install();
		}
   }

	public function init($params){
		$this->params = array_merge($this->params, $params);
	}
	
	public function set_user_id($user_id){
		$this->user_id = $user_id;
	}
	
   private function install(){
    	$sql = "CREATE TABLE `{$this->table}` (
					`id` INT(11) NOT NULL AUTO_INCREMENT,
					`user_id` INT(11) NULL DEFAULT NULL,
					`error_code` VARCHAR(5) NULL DEFAULT NULL,
					`merchant_id` VARCHAR(50) NULL DEFAULT NULL,
					`merchant_account` VARCHAR(255) NULL DEFAULT NULL,
					`pin_card` VARCHAR(14) NULL DEFAULT NULL,
					`card_serial` VARCHAR(20) NULL DEFAULT NULL,
					`type_card` ENUM('VMS','VNP','VIETTEL','VCOIN','GATE') NULL DEFAULT NULL COMMENT 'VMS: Thẻ cào MobiFone; VNP: Thẻ cào VinaPhone; VIETTEL: Thẻ cào Viettel; VCOIN: Thẻ cào VTC Coin; GATE: Thẻ cào FPT Gate',
					`ref_code` VARCHAR(50) NULL DEFAULT NULL COMMENT 'Mã duy nhất tương ứng với một mã khách hàng tại merchant (ví dụ: mã hóa đơn nạp tiền, tên truy cập tài khoản, mã tài khoản …) Trường hợp này dùng để đối soát giữa Nganluong.vn và merchant',
					`client_fullname` VARCHAR(255) NULL DEFAULT NULL,
					`client_email` VARCHAR(255) NULL DEFAULT NULL,
					`client_mobile` VARCHAR(20) NULL DEFAULT NULL,
					`card_amount` INT(11) NULL DEFAULT NULL COMMENT 'Mệnh giá thẻ',
					`transaction_amount` INT(11) NULL DEFAULT NULL COMMENT 'Số tiền merchant thực nhận tại Nganluong.vn (sau khi trừ phí)',
					`transaction_id` VARCHAR(20) NULL DEFAULT NULL COMMENT 'Mã giao dịch phát sinh tại Nganluong.vn',
					`ngay_gio` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
					PRIMARY KEY (`id`)
				)
				COMMENT='Giao dịch thanh toán card - ngân lượng'
				ENGINE=InnoDB;";
		$this->CI->db->query($sql);
	}	
	
	public function request(){
		$post_field = '';
		foreach ($this->params as $key => $value){
			if ($post_field != '') $post_field .= '&';
			$post_field .= "$key=$value";
		}
		$api_url = "https://www.nganluong.vn/mobile_card.api.post.v2.php"; 
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $api_url);
		curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); 
		curl_setopt($ch, CURLOPT_VERBOSE, 1);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
		curl_setopt($ch, CURLOPT_POST, 1); 
		curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field); 
		$result = curl_exec($ch);
		$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
		$error = curl_error($ch);
		if ($result != '' && $status==200){
			$arr_result = explode("|",$result);
			// echo '<pre>';print_r($arr_result);die;
			if (count($arr_result) == 13) {
				$data['user_id']				= $this->user_id;
				$data['error_code']			= $arr_result[0];
				$data['merchant_id']			= $arr_result[1];
				$data['merchant_account']	= $arr_result[2];
				$data['pin_card']				= $arr_result[3];
				$data['card_serial']			= $arr_result[4];
				$data['type_card']			= $arr_result[5];
				$data['ref_code']				= $arr_result[6];
				$data['client_fullname']	= $arr_result[7];
				$data['client_email']		= $arr_result[8];
				$data['client_mobile']		= $arr_result[9];
				$data['card_amount']			= $arr_result[10];
				$data['transaction_amount']= $arr_result[11];
				$data['transaction_id']		= $arr_result[12];
				$this->add($data);
				return $data;
				if ($arr_result[0] == '00')
					echo(" Nạp thẻ thành công, mệnh giá thẻ = ".$card_amount);					
				else
					echo("Có lỗi khi nạp thẻ, mã lỗi ".$arr_result[0]);
			}
		}
		return false;
	}
 
   public function add($data){
    	// $this->CI->db->set('date_registered', 'NOW()', false);
    	return $this->CI->db->insert($this->table, $data);
   }
 
    public function update($data)
    {
    	$this->CI->db->set('date_registered', 'NOW()', false);
    	if($this->CI->db->update($this->rating_table)){
    		return true;
    	}
    }
 
    public function delete($rating_id)
    {
    	$this->CI->db->where('id', $rating_id);
    	if($this->CI->db->delete($this->rating_table)){
    		return true;
    	}
    }
 
 
}